package com.yfs.cloud.aop;
/**
* @Company: 影法師工作室
* @Description: 分页aop, 即自动加上分页参数, 注意, 分页参数固定使用 Constants.PAGE_NUM 和 Constants.PAGE_SIZE, 不要硬编码
* @author 影法師  
* @date 2020年9月7日 下午1:14:41 
* @version V1.0
 */

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import com.github.pagehelper.PageHelper;
import com.yfs.cloud.commons.Constants;

@Aspect
@Component
@SuppressWarnings("all")
public class PageHelperAspect {

	/**调用service层以findPage开头的方法时触发*/
	@Pointcut("execution(public * com.yfs.cloud.service.impl.*.findPage*(..))")
	public void doNothing() {
	}

	@Before("doNothing()")
	public void doBefore(JoinPoint joinPoint) {
		Object[] args = joinPoint.getArgs();
		if (Objects.nonNull(args) && args.length == 1 && args[0].getClass().isAssignableFrom(HashMap.class)) {
			PageHelper.startPage((Integer) ((Map) args[0]).get(Constants.PAGE_NUM),
					(Integer) ((Map) args[0]).get(Constants.PAGE_SIZE));
		}
	}
}
